<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
    <title>PS_RD文档</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
    <link rel="stylesheet" href="http://{{$_SERVER['HTTP_HOST']}}/css/bootstrap@3.4.1.min.css"/>
    <link href="https://cdn.bootcdn.net/ajax/libs/prism-themes/1.9.0/prism-a11y-dark.min.css" rel="stylesheet">

</head>
<body>
    <div class="container">

        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-7">
                <h1 class="page-header">项目介绍</h1>
                <p>PShape小程序有三个项目代号，分别为PS_RD（PHP实现的后端项目）、PS_FE_React（React实现的小程序）、PS_FE_Vue（Vue实现的小程序），其中PS_FE_React和PS_FE_Vue两个项目都是使用跨端技术实现，分别为<a target="_blank" href="https://taro-docs.jd.com/docs/">Taro</a>和<a href="https://uniapp.dcloud.net.cn/tutorial/" target="_blank">Uniapp</a>框架，而"PS_RD"项目是使用Laravel框架完成客户端接口和CMS接口两部分功能。

                <ul>
                    <li>
                        API文档地址如下：SwaggerAPI - <a href="http://{{$_SERVER['HTTP_HOST']}}/api/documentation">点击访问</a>
                    </li>
                    <li>
                        PS_RD：
                        代码仓库地址 - <a target="_blank" href="https://gitee.com/Henry_Wong_php/PS_RD">点击访问</a>
                    </li>
                    <li>
                        PS_FE_React:
                        代码仓库地址 - <a target="_blank" href="https://gitee.com/Henry_Wong_php/PS_FE_React">点击访问</a>
                    </li>
                    <li>
                        PS_FE_Vue:
                        代码仓库地址 - <a target="_blank" href="https://gitee.com/Henry_Wong_php/ps_-fe_-vue.git">点击访问</a>
                    </li>
                </ul>

            </div>
            <div class="col-xs-12 col-sm-6 col-md-5">
                <h1 class="page-header">服务器</h1>
                <ul>
                    <li>IP地址： 8.130.9.76</li>
                    <li>当前域名：{{$_SERVER['HTTP_HOST']}}</li>
                    <li>地域：华北6（乌兰察布）</li>
                    <li>运行系统：Alibaba Cloud Linux  3.2104 LTS 64位</li>
                </ul>
            </div>
        </div>


        <div class="row">
                <div class="col-xs-12 col-sm-6 col-md-7">
                    <h1 class="page-header">安装</h1>
                    <p>本项目的安装文件(<a href="https://{{$_SERVER['HTTP_HOST']}}/init_linux.sh">init_linux.sh</a>)存放在该项目的根目录下，执行前请提前准备好干净的linux系统，本项目会提前为系统安装各种依赖包和软件，并自动拉取项目代码并运行，该文件有各行命令的注释，使用者请根据自己的实际环境来修改相应的参数。</p>
                    <small>提示：</small><br/>
                    <p style="margin-top: 10px;font-size:10px;">1. 执行完脚本需对项目目录授权可读、可写、可执行的权限：<br/>
                        <code class="language-shell-session">
                            chmod -R 777 /home/www/PS_RD
                        </code>
                    </p>
                    <p style="margin-top: 10px;font-size:10px;">2. 执行完脚本需提供MySQL原始数据：<br/>
                        <code class="language-shell-session">docker exec -i my_php /bin/bash -c "cd /usr/share/nginx/html/PS_RD && sh init.sh"</code>
                    </p>
                </div>

                <div class="col-xs-12 col-sm-6 col-md-5">
                    <h1 class="page-header">Laravel常用命令</h1>
                    <p>① 执行数据库迁移：<code>php artisan migrate</code></p>
                    <p>② 回滚上一个数据表：<code>php artisan migrate:rollback</code></p>
                    <p>③ 新建seeder文件：<code>php artisan make:seeder ***Seeder</code></p>
                    <p>④ 执行seeder文件：<code>php artisan db:seed --class=***Seeder</code></p>
                    <p>⑤ 新建模型文件：<code>php artisan make:model ***</code></p>
                    <p>⑥ 创建迁移文件：<code>php artisan make:migration create_**s_table</code></p>
                    <p>⑦ 创建二级控制器：<code>php artisan make:controller ***/***Controller</code></p>
                    <p>⑧ 生成swagger：<code>php artisan l5-swagger:generate</code></p>
                    <p>⑧ 创建软链接：<code>php artisan storage:link</code></p>

                </div>

                <div class="col-xs-12 col-sm-6 col-md-12">
                    <h1 class="page-header">Docker容器信息</h1>
                    <p>本项目依赖的环境和软件由docker容器组建，点击下载docker-compose的<a href="https://{{$_SERVER['HTTP_HOST']}}/docker-compose.yaml">YAML配置文件</a>，执行该文件前请进入该文件的存放目录，最后执行命令  docker-compose up -d便会启动项目依赖的所有容器</p>

                    <div class="col-md-3">
                        <h3 class="page-header">Redis</h3>
                        <p>镜像名：redis:latest</p>
                        <p>容器名：my_redis</p>
                        <p>映射端口：6379:6379</p>
                    </div>

                    <div class="col-md-3">
                        <h3 class="page-header">Nginx</h3>
                        <p>镜像名：nginx:latest</p>
                        <p>容器名：my_nginx</p>
                        <p>映射端口：① 80:80 ② 443:443</p>
                        <p>文件挂载：</p>
                        <p>① /home/nginx/conf/:/etc/nginx/conf.d/</p>
                        <p>② /home/www/:/usr/share/nginx/html/</p>
                        <p>项目配置文件： <a href="https://{{$_SERVER['HTTP_HOST']}}/default.conf">default.conf</a></p>
                        <p>ssl证书文件：
                        <a href="https://{{$_SERVER['HTTP_HOST']}}/cert/9255844_www.henrywong01.top.key">key</a> /
                        <a href="https://{{$_SERVER['HTTP_HOST']}}/cert/9255844_www.henrywong01.top.pem">pem</a>
                        </p>
                    </div>

                    <div class="col-md-3">
                        <h3 class="page-header">PHP</h3>
                        <p>镜像名：php:7.3-fpm</p>
                        <p>容器名：my_php</p>
                        <p>映射端口：9000:9000</p>
                        <p>文件挂载：</p>
                        <p>① /home/www/:/usr/share/nginx/html/</p>
                        <p>已安装的扩展：</p>
                        <p>①gd  ②pdo  ③pdo-mysql</p>
                        <p></p>
                    </div>

                    <div class="col-md-3">
                        <h3 class="page-header">MySQL</h3>
                        <p>镜像名：mysql</p>
                        <p>容器名：mysql</p>
                        <p>映射端口：3306:3306</p>
                        <p>数据库名：PS_RD</p>
                        <p>字符集：utf8mb4</p>
                        <p>排序规则：utf8mb4_general_ci</p>
                        <p>root密码：
                            <a data-toggle="modal" data-target="#myModal" class="view" id="dbRootPwd">点击查看</a>
                        </p>
                    </div>
                </div>

        </div>

        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-4">
                <h1 class="page-header">微信公众平台
                    <small>PShape</small>
                </h1>
                <p>平台类型：小程序</p>
                <p>注册邮箱：PS18128625020@126.com</p>
                <p>邮箱密码：
                    <a data-toggle="modal" data-target="#myModal" class="view" id="mailBoxPwd">点击查看</a>
                </p>
                <p>邮箱绑定手机：18128625020</p>
                <p>平台登录密码：

                    {{--
                        data-toggle：告诉浏览器弹窗框类型，如模态框（modal）\popover(弹出框)\tooltips(提示框)等
                        data-target：指定加载的模态框
                    --}}
                    <a data-toggle="modal" data-target="#myModal" class="view" id="weChatPwd">点击查看</a>
                </p>
                <p>AppID(小程序ID)：
                    <a data-toggle="modal" data-target="#myModal" class="view" id="AppID">点击查看</a>
                </p>
                <p>AppSecret（小程序秘钥）：
                    <a data-toggle="modal" data-target="#myModal" class="view" id="AppSecret">点击查看</a>
                </p>
            </div>

            <div class="col-xs-12 col-sm-6 col-md-4">
                <h1 class="page-header">
                    七牛云储存
                </h1>
                <p>本人将图片储存在第三方对象储存平台，通过CDN技术让项目加载图片快人一步！</p>
                <p>
                    七牛云账号：
                    <a data-toggle="modal" data-target="#myModal" class="view" id="QiniuAcc">点击查看</a>
                </p>
                <P>
                    七牛云密码：
                    <a data-toggle="modal" data-target="#myModal" class="view" id="QiniuPwd">点击查看</a>
                </P>
                <p>加速域名：cdn.henrywong01.top (已支持HTTPS)</p>
                <p>CNAME：cdn-henrywong01-top-idvl65q.qiniudns.com</p>
                <p>空间名称：pshape</p>

            </div>

            <div class="col-xs-12 col-sm-6 col-md-4">
                <h1 class="page-header">
                    短信发送
                </h1>
                <p>用户预约需填写手机号码，并验证手机号是否合法且真实，因此需要用户接收短信并填写验证码。本需求借助第三方短信服务平台（<a href="https://www.landui.com/">蓝队云</a>）实现功能。</p>
                <p>后台账户（手机号）：
                    <a data-toggle="modal" data-target="#myModal" class="view" id="LanduiAcc">点击查看</a>
                </p>
                <p>后台密码：
                    <a data-toggle="modal" data-target="#myModal" class="view" id="LanduiPwd">点击查看</a>
                </p>
                <p>accessKeyId：
                    <a data-toggle="modal" data-target="#myModal" class="view" id="Landui_accessKeyId">点击查看</a>
                </p>
                <p>accessKeySecret：
                    <a data-toggle="modal" data-target="#myModal" class="view" id="Landui_accessKeySecret">点击查看</a>

                </p>
                <p>服务地址：apisms.landui.com</p>
                <p>签名名称：PShape小程序</p>
                <p>模板ID：1664</p>
            </div>



        </div>

        <div class="row">

            <div class="col-xs-12 col-sm-9 col-md-9">
                <h1 class="page-header">
                    定时任务
                </h1>
                <p>1.拉取远端master分支（每分钟执行）：<a href="https://{{$_SERVER['HTTP_HOST']}}/cronjob/GitPull.sh">GitPull.sh</a><br>
                    <code class="language-shell-session">
                        */1 * * * * sh /home/www/PS_RD/public/cronjob/GitPull.sh
                    </code>
                </p>
                <p>2.更新可预约的时间点的状态（每分钟执行）:<br>
                    <code class="language-shell-session">
                        */1 * * * * docker exec -i my_php /bin/bash -c "cd /usr/share/nginx/html/PS_RD && php artisan init_available_booking"
                    </code>
                </p>
            </div>

            <div class="col-xs-12 col-sm-3 col-md-3">
                <h1 class="page-header">
                    小程序码
                </h1>
                <img src="http://cdn.henrywong01.top/pshape.png" width="150px" crossorigin='anonymous'/>
            </div>
        </div>






    </div>

    <div class="panel-footer " style="text-align: center;margin-top: 30px;color:gray;">
        备案号：<a href="https://beian.miit.gov.cn/">粤ICP备2023007641号</a>
        &nbsp;&nbsp;
        此网站非商业用途，只作为个人作品和技术分享
    </div>

    <!- Modal -->
    <div class="modal fade" role="dialog" id="myModal">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-body">
                    请输入查看密码：<input id="authPwd" type="password" />
                    <button style="margin-left: 10px;" type="submit" id="submit">确认</button>
                </div>
            </div>
        </div>
    </div>
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
{{--<script src="https://cdn.bootcdn.net/ajax/libs/prism/9000.0.1/components/prism-actionscript.min.js"></script>--}}
<script>
    const domain = "https://www.henrywong01.top";

    //设置授权类型
    $('.view').click(function(){
        localStorage.setItem("authType", $(this).attr('id'))
    });

    //绑定模态框中确认按钮的点击事件
    $('#submit').click(function () {
        $.post(domain+"/client/key/getInfoByAuthCode",{
            "authCode": $("#authPwd").val(),
            "key": localStorage.getItem("authType")
        },function (res) {
            if(res.code !== 200){
                alert(res.msg);
            }else{
                $("#"+ localStorage.getItem("authType")).replaceWith("<a>"+res.data.value+"</a>");
            }
            $('#myModal').modal('hide');
        })
    });








</script>
</html>


